$(function() {
	var changeTabClick = function(e) {
		var $this = $(this);
		var _this = this;
		$this.parents('ul').find('li.active').removeClass('active');
		$this.parents('li').addClass('active');
		$('#mapm .tabs .in').hide();
		$('#mapm .tabs .in:nth-child(' + getIndex(_this) + ')').show();
	}

	$('a.tm-checkbox').remove();

	var checkClick = function() {
		var $this = $(this);
		var inpChecked = $this.siblings('input[type="checkbox"]').attr('checked');
		if (inpChecked) {
			$this.removeClass('a-checked');
			$this.siblings('input[type="checkbox"]').removeAttr('checked');
		} else {
			$this.addClass('a-checked');
			$this.siblings('input[type="checkbox"]').attr('checked', 'checked');
		}
	}

	$('#cnt-top > .tabs ul.menu li a').bind('click', changeTabClick);
	$('.tourist-data li div.check a.a-check').bind('click', checkClick);

	var visaAvail = $('.pasport_visa_avail select');
	visaAvail.each(function() {
		if ($(this).val() < 1) {
			$(this).parents('table').find('.pasport_visa_avail_schengen select').attr('disabled', 'disabled');
			$(this).parents('table').find('.other_visas select').attr('disabled', 'disabled');
		}
	});
	var childDocAvail = $('.child_travel_document select');
	childDocAvail.each(function() {
		var table = $(this).parents('table');
		if ($(this).val() != 'Y') {
			table.find('.pasport_visa_avail select').attr('disabled', 'disabled');
			table.find('.pasport_visa_avail_schengen select').attr('disabled', 'disabled');
			table.find('.other_visas select').attr('disabled', 'disabled');
		}
	});

	$('.child_travel_document select').bind('change', toggleVisasChild);
	$('.child_travel_document select').bind('blur', toggleVisasChild);
	
	$('.pasport_visa_avail select').bind('change', toggleVisas);
	$('.pasport_visa_avail select').bind('blur', toggleVisas);
	
	$('#mapm .in form').bind('submit', validate);
	
	var
		mesReq = 'REQUIRED_FIELD'.translate(),
		mesEmail = 'INCORRECT_EMAIL'.translate()
	;
	$.validator.messages.required = mesReq;
	
	$('#mapm .in form').each(function() {
		$(this).validate({
			messages: {
				email: mesEmail
			},
			errorClass: 'invalid'
		});
	});

});

function tabsCount() {
	var i = 0;
	$('#cnt-top>.tabs ul.menu li').each(function() {
		i++;
	});
	return i;
}

function getIndex(elm) {
	var index;
	for (var j = 1; j <= tabsCount(); j++) {
		if ($(elm).parents('ul.menu').find('li:nth-child(' + j + ')').hasClass('active')) {
			index = j;
		}
	}
	return index;
}

function toggleVisas(e) {
	var $this = $(this);
	var table = $this.parents('table');
	var shengen = table.find('.pasport_visa_avail_schengen select');
	var other = table.find('.other_visas select');
	if ($this.val() >= 1) {
		shengen.removeAttr('disabled');
		other.removeAttr('disabled');
	} else {
		shengen.attr('disabled', 'disabled');
		other.attr('disabled', 'disabled');
	}
}

function toggleVisasChild() {
	var $this = $(this);
	var table = $this.parents('table');
	var visaAvail = table.find('.pasport_visa_avail select');
	if ($this.val() == 'Y') {
		visaAvail.removeAttr('disabled');
	} else {
		visaAvail.attr('disabled', 'disabled');
		table.find('.pasport_visa_avail_schengen select').attr('disabled', 'disabled');
		table.find('.other_visas select').attr('disabled', 'disabled');
	}
}

function validate() {
	var $this = $(this);
	$('.error').remove();
	var error = $('<div class="error" id="main-error">Пожалуйста заполните поля, отмеченные *.<br /></div>');
	var valid = true;
	var childDocument = $this.find('.child_travel_document select');
	$this.find('.tourist-data li .check input:checked').each(function() {
		var li = $(this).parents('li');
		var firstTd = li.find('.body table tr:first td');
		function errorTrue() {
			error.clone(true).appendTo(firstTd);
			valid = false;
		}
		if ($(this).parents('ul.tourist-data').hasClass('children-list')) {
			if (childDocument.val() == '' || li.find('.pasport_visa_avail select').val() < 0) {
				errorTrue();
			} else if (childDocument.val() == 'Y' && li.find('.pasport_visa_avail select').val() > 0 && (li.find('.other_visas select').val() == '' || li.find('.pasport_visa_avail_schengen select').val() < 0)) {
				errorTrue();
			}
			if (childDocument.val() == 'N') {
				firstTd.html('');
				valid = true;
			}
		} else {
			if (li.find('select.family_status').val() == '' || li.find('.pasport_visa_avail select').val() < 0) {
				errorTrue();
			} else if (li.find('.pasport_visa_avail select').val() > 0 && (li.find('.other_visas select').val() == '' || li.find('.pasport_visa_avail_schengen select').val() < 0)) {
				errorTrue();
			}
		}
	});
	var checkedInputs = 0;
	$this.find('.tourist-data li .check input').each(function() {
		if ($(this).is(':checked')) {
			checkedInputs++;
		}
	});
	if (checkedInputs == 0) {
		valid = false;
		alert('CHOOSE_TOURIST'.translate());
	}
	if (!valid) return false;
}